#!/bin/sh

IBPATH=${IBPATH:-/usr/local/bin}

function usage() {
	echo Usage: `basename $0` "[-h] [-v] [-N \| -nocolor] [-G] <lid|guid>"
	exit -1
}

function green() {
	if [ "$bw" = "yes" ]; then
		if [ "$verbose" = "yes" ]; then
			echo $1
		fi
		return
	fi
	if [ "$verbose" = "yes" ]; then
		echo -e "\\033[1;032m" $1 "\\033[0;39m"
	fi
}

function red() {
	if [ "$bw" = "yes" ]; then
		echo $1
		return
	fi
	echo -e "\\033[1;031m" $1 "\\033[0;39m"
}

guid_addr=""
bw=""
verbose=""

while [ "$1" ]; do
	case $1 in
	-G)
		guid_addr=yes
		;;
	-nocolor|-N)
		bw=yes
		;;
	-v)
		verbose=yes
		;;
	-*)
		usage
		;;
	*)
		break
		;;
	esac
	shift
done

if [ -z "$1" ]; then
	usage
fi

if [ "$guid_addr" ]; then
	if ! lid=`$IBPATH/ibaddr -G -L $1 | awk '/failed/{exit -1} {print $3}'`; then
		echo -n "guid $1 address resolution: "
		red "FAILED"
		exit -1
	fi
else
	lid=$1
	if ! temp=`$IBPATH/ibaddr -L $1 | awk '/failed/{exit -1} {print $1}'`; then
		echo -n "lid $1 address resolution: "
		red "FAILED"
		exit -1
	fi
fi

## For now, check node only checks if node info is replied

if $IBPATH/smpquery nodeinfo $lid > /dev/null 2>&1 ; then
	if [ "$verbose" = "yes" ]; then
		echo -n "Node check lid $lid: "
		green OK
	fi
	exit 0
else
	echo -n "Node check lid $lid: "
	red FAILED
	exit -1
fi
